/**
 * 登录相关 API 接口
 */

import { http } from 'uview-plus';

/**
 * 验证码发送
 * @param {Object} data - 请求参数
 * @param {string} data.phone - 手机号
 * @param {string} data.type - 验证码类型 (login: 登录, register: 注册, reset: 重置密码)
 * @returns {Promise} 返回Promise对象
 */
export const sendSmsCode = (data) => {
  return http.post('/api/register/verify', data);
};

/**
 * 手机号验证码登录
 * @param {Object} data - 请求参数
 * @param {string} data.phone - 手机号
 * @param {string} data.captcha - 验证码
 * @param {string} data.spread - 推广人ID (可选)
 * @returns {Promise} 返回Promise对象
 */
export const loginBySms = (data) => {
  return http.post('/api/login/mobile', data);
};

/**
 * 账号密码登录
 * @param {Object} data - 请求参数
 * @param {string} data.account - 账号 (手机号/用户名/邮箱)
 * @param {string} data.password - 密码
 * @param {string} data.spread - 推广人ID (可选)
 * @returns {Promise} 返回Promise对象
 */
export const loginByPassword = (data) => {
  return http.post('/api/login', data);
};

/**
 * 验证手机号格式
 * @param {string} mobile - 手机号
 * @returns {boolean} 是否有效
 */
export const validateMobile = (mobile) => {
  const mobileRegex = /^1[3-9]\d{9}$/;
  return mobileRegex.test(mobile);
};

/**
 * 验证验证码格式
 * @param {string} captcha - 验证码
 * @returns {boolean} 是否有效
 */
export const validateCaptcha = (captcha) => {
  return /^\d{6}$/.test(captcha);
};

/**
 * 验证密码格式
 * @param {string} password - 密码
 * @returns {Object} 验证结果 {isValid: boolean, message: string}
 */
export const validatePassword = (password) => {
  if (!password || password.length < 6) {
    return {
      isValid: false,
      message: '密码长度不能少于6位'
    };
  }
  return {
    isValid: true,
    message: ''
  };
};

/**
 * 短信验证码类型常量
 */
export const SMS_EVENTS = {
  LOGIN: 'login',
  REGISTER: 'register',
  RESET: 'reset'
};

/**
 * 第三方登录平台常量
 */
export const THIRD_PARTY_PLATFORMS = {
  WECHAT: 'wechat',
  QQ: 'qq',
  APPLE: 'apple'
};

/**
 * Apple 登录接口
 * @param {Object} data - 请求参数
 * @param {string} data.code - 授权码
 * @param {string} data.identityToken - 身份令牌
 * @returns {Promise} 返回Promise对象
 */
export const appleLogin = (data) => {
  return http.post('/api/login/apple', data);
};

/**
 * 第三方登录接口
 * @param {Object} data - 请求参数
 * @param {string} data.platform - 平台类型
 * @param {string} data.code - 授权码
 * @returns {Promise} 返回Promise对象
 */
export const thirdPartyLogin = (data) => {
  return http.post('/api/login/oauth', data);
};

/**
 * 手机号验证码注册
 * @param {Object} data - 请求参数
 * @param {string} data.phone - 手机号
 * @param {string} data.captcha - 验证码
 * @param {string} data.spread - 推广人ID (可选)
 * @returns {Promise} 返回Promise对象
 */
export const registerBySms = (data) => {
  return http.post('/api/register', data);
};
